package model

import (
	"html/template"
	"time"
)

// Type 文章分类模型
type Type struct {
	ID         int       `gorm:"primaryKey;autoIncrement" json:"id"`
	Name       string    `gorm:"size:100;not null" json:"name"`
	FID        int       `gorm:"default:0" json:"fid"`     // 父分类ID
	FIDName    string    `gorm:"size:100" json:"fid_name"` // 父分类名称
	ReadLevel  int       `gorm:"default:0" json:"read_level"`
	IsShow     int       `gorm:"default:1" json:"is_show"`
	Sort       int       `gorm:"default:0" json:"sort"`
	CreateTime time.Time `gorm:"autoCreateTime" json:"create_time"`
	UpdateTime time.Time `gorm:"autoUpdateTime" json:"update_time"`
}

// TableName 指定表名
func (Type) TableName() string {
	return "bg_posts_type"
}

// TypeListData 分类列表数据
type TypeListData struct {
	ID        int         `json:"id"`
	Name      string      `json:"name"`
	PostNum   int         `json:"post_num"`
	FID       int         `json:"fid"`
	FIDName   string      `json:"fid_name"`
	ReadLevel int         `json:"read_level"`
	IsShow    bool        `json:"is_show"`
	Child     interface{} `json:"child"`
}

// TypeName 分类名称数据
type TypeName struct {
	ID        int    `json:"id"`
	Name      string `json:"name"`
	FID       int    `json:"fid"`
	FName     string `json:"f_name"`
	ReadLevel int    `json:"read_level"`
	IsShow    int    `json:"is_show"`
	AddTime   string `json:"add_time"`
}

// ToHtml 生成HTML链接
func (t *TypeName) ToHtml(byAdmin bool) template.HTML {
	// 此方法将在 ds 层实现
	return template.HTML("")
}

// TypesNames 分类名称缓存
type TypesNames struct {
	Lists      map[int]TypeName `json:"lists"`
	CachedTime int64            `json:"cached_time"`
}
